<?php
/**
 * Проверка конфигов на валидность.
 * @author nrnwest@gmail.com
 *
 */
class Admin_Validate_Config extends Zend_Validate_Abstract
{
    protected $_messageTemplates = array('error'=>'В конфиге допушена ошибка "%value%"');
    
    
    private $_typeConfig = 'ini';
    
    
    public function __construct($typeConfig = 'ini')
    {
       $this->_typeConfig = $typeConfig;
    }

    
    public function isValid($value)
    {
      $value = trim($value);
      // запишем конфиг в временый файл
      $path = tempnam(Arm_Core::getPathApplication() . 'temp', 'CON');
      $fp = fopen($path, 'ab');
      fwrite($fp, $value);
      fclose($fp);
      switch ($this->_typeConfig) {
      	case 'ini':
      	$class = 'Zend_Config_Ini';
      	;
      	break;
      	case 'xml':
      	$class = 'Zend_Config_Xml';
      	;
      	break;    
      }
      
      try {
       $con = new $class($path);
       if($con->valid() === false) {
           throw new Exception(Arm_Translate::_('Конфиг не прошол валидацию'));
       }
      } catch (Exception $e) {
          $this->_error('error', $e->getMessage());
          unlink($path);
          return false;
      }
      unlink($path);
      return true;
    }
 
}